package cn.funeralobjects.ams.service;

import cn.funeralobjects.ams.BasicInfo;
import cn.funeralobjects.ams.entity.EProductApi;
import cn.funeralobjects.ams.model.ProductApi;
import cn.funeralobjects.common.service.NameService;

import java.util.Optional;

/**
 * @author FuneralObjects
 * Create date: 2020/5/28 5:02 PM
 */
public interface ProductApiService extends BaseAmsService<ProductApi, EProductApi, Integer>, NameService<EProductApi, Integer> {

    String ENTITY_NAME = "ProductApi";

    /**
     * name
     *
     * @return name
     */
    @Override
    default String getName() {
        return ENTITY_NAME;
    }

    /**
     * module name
     *
     * @return module name
     */
    @Override
    default String getModuleName() {
        return BasicInfo.MODULE_NAME;
    }

    /**
     * 是否存在api
     *
     * @param productId 产品id
     * @param action    访问名
     * @param version   版本号
     * @return true - 存在
     */
    boolean existsApi(Integer productId, String action, String version);

    /**
     * 是否存在api
     *
     * @param productId 产品id
     * @param action    访问名
     * @param version   版本号
     * @param withoutId 排除id
     * @return true - 存在
     */
    boolean existsApi(Integer productId, String action, String version, Integer withoutId);

    /**
     * 查询实体
     *
     * @param productId 产品id
     * @param action    访问标识
     * @param version   版本号
     * @return 实体
     */
    Optional<EProductApi> findOne(Integer productId, String action, String version);

}
